/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package chat.server;

//import chat.CommunicationsManager;
import java.net.*;
import java.io.*;
import java.util.*;

/**
 * Server's main class
 * @author Berthier Sebastien, Marigny Julien
 */
public class Server {

    /**
     * Controle la vie du thread
     * si true, c''est ok
     * pour tuer le thread, il suffit de la mettre a faux
     */
    private static boolean alive;

    private static void Server() {
        alive = true;
        valeur = 5;
    }

    /*
     * ici, on collection les connections
     */
    private static CommunicationsManager com;
    private static int valeur;

    /**
     * @param args the command line arguments
     * On recupere le numero de port dans la ligne de commande
     * On creer le server (communication manager)
     * Et on lance la boucle de commande
     */
    public static void main(String[] args) {
        System.out.println("Demarage serveur !");
        int port = 10009; // Integer.parseInt(args[0]);
//        sev.init(port);
        com = new CommunicationsManager(port); // creation du serveur, avec socket d'ecoute.
        runServer();
    }

    /**
     * sert a controler le server
     * on peut quiter
     * se connecter (si deconnecter)
     * se deconnecter (si connecter)
     * afficher les information sur le server
     */
    private static void runServer() {
        com.start();
        System.out.println("Bienvenue sur le server du chat seb-jul.");
        alive = true;
        while (alive) {
            afficheMenu();
            Scanner tmp = new Scanner(System.in);
            valeur = tmp.nextInt();
            switch (valeur) {
                case 0:
                    alive = false;
                    com.closeConnections();
                    break;
                case 1:
                    if (com.getAlive()) {
                        com.closeConnections();
                    }
                    else {
                        System.out.println("Allready disconnected !");
                    }
                    break;
                case 2:
                    if (!com.getAlive()) {
                        System.out.println("Num port :");
                        Scanner tmp2 = new Scanner(System.in);
                        int port = tmp2.nextInt();
                        com = new CommunicationsManager(port);
                        com.start();
                    }
                    else {
                        System.out.println("Allready connected !");
                    }
                    break;
                case 3:
                    com.displayInfo();
                    break;
                default:
                    System.out.println("Erreur !");
            }
        }
        System.out.println("Fin serveur !");
        System.exit(0); // fin de l'application
    }

    /**
     * Afficher le menu de la commande du server
     */
    private static void afficheMenu() {
        System.out.println("*********************");
        System.out.println("0 > quit");
        System.out.println("1 > deconnection");
        System.out.println("2 > connection");
        System.out.println("3 > display info");
        if (com.getAlive()) {
            System.out.println("Server connected");
        }
        else {
            System.out.println("Server disconnected");
        }
        System.out.println("*********************");
        System.out.print("votre chois : ");
    }

}
